[INFO] cloning repository https://github.com/wazart0/tiling_window_manager
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wazart0/tiling_window_manager" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwazart0%2Ftiling_window_manager", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwazart0%2Ftiling_window_manager'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d6923c6ec49e55e54435af7a7716f598688a3219
[INFO] fixing wazart0/tiling_window_manager against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwazart0%2Ftiling_window_manager" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/wazart0/tiling_window_manager
[INFO] finished tweaking git repo https://github.com/wazart0/tiling_window_manager
[INFO] tweaked toml for git repo https://github.com/wazart0/tiling_window_manager written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/wazart0/tiling_window_manager on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/wazart0/tiling_window_manager already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a
[INFO] running `Command { std: "docker" "start" "1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]     Checking cfg-if v1.0.3
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling x11 v2.21.0
[INFO] [stderr]     Checking twmx v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `crate::wm_functions`
[INFO] [stdout]  --> src/parser.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::wm_functions::*;
[INFO] [stdout]   |            ^^^^^^^^^^^^ could not find `wm_functions` in the crate root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/types.rs:3:42
[INFO] [stdout]   |
[INFO] [stdout] 3 | use x11::xlib::{Window, KeySym, KeyCode, Display};
[INFO] [stdout]   |                                          ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/parser.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ffi::CString`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::ffi::CString;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0592]: duplicate definitions with name `focus_prev`
[INFO] [stdout]     --> src/main.rs:1621:5
[INFO] [stdout]      |
[INFO] [stdout] 1066 |     unsafe fn focus_prev(&mut self) {
[INFO] [stdout]      |     ------------------------------- other definition for `focus_prev`
[INFO] [stdout] ...
[INFO] [stdout] 1621 |     pub fn focus_prev(&mut self) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `focus_prev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:113:35
[INFO] [stdout]     |
[INFO] [stdout] 113 |             XSetErrorHandler(Some(Self::other_wm_error_handler));
[INFO] [stdout]     |                              ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected "C" fn, found "Rust" fn
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected fn pointer `unsafe extern "C" fn(_, _) -> _`
[INFO] [stdout]                   found fn item `unsafe fn(_, _) -> _ {WindowManager::other_wm_error_handler}`
[INFO] [stdout] help: the type constructed contains `unsafe fn(*mut _XDisplay, *mut x11::xlib::XErrorEvent) -> i32 {WindowManager::other_wm_error_handler}` due to the type of the argument passed
[INFO] [stdout]    --> src/main.rs:113:30
[INFO] [stdout]     |
[INFO] [stdout] 113 |             XSetErrorHandler(Some(Self::other_wm_error_handler));
[INFO] [stdout]     |                              ^^^^^----------------------------^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this argument influences the type of `Some`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/option.rs:605:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `types::Scratchpad: Copy` is not satisfied
[INFO] [stdout]    --> src/main.rs:145:31
[INFO] [stdout]     |
[INFO] [stdout] 145 |                 scratchpads: [Scratchpad::new(); MAX_SCRATCHPADS],
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `types::Scratchpad`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout]     = help: consider using `core::array::from_fn` to initialize the array
[INFO] [stdout]     = help: see https://doc.rust-lang.org/stable/std/array/fn.from_fn.html for more information
[INFO] [stdout] help: consider annotating `types::Scratchpad` with `#[derive(Copy)]`
[INFO] [stdout]    --> src/types.rs:214:1
[INFO] [stdout]     |
[INFO] [stdout] 214 + #[derive(Copy)]
[INFO] [stdout] 215 | pub struct Scratchpad {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:359:37
[INFO] [stdout]     |
[INFO] [stdout] 359 |         XUngrabButton(self.display, AnyButton, AnyModifier, self.root);
[INFO] [stdout]     |         -------------               ^^^^^^^^^ expected `u32`, found `i32`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/x11-2.21.0/src/xlib.rs:734:10
[INFO] [stdout]     |
[INFO] [stdout] 734 |   pub fn XUngrabButton (_4: *mut Display, _3: c_uint, _2: c_uint, _1: c_ulong) -> c_int,
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to a `u32` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 359 |         XUngrabButton(self.display, AnyButton.try_into().unwrap(), AnyModifier, self.root);
[INFO] [stdout]     |                                              ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:450:45
[INFO] [stdout]     |
[INFO] [stdout] 450 |             XMoveResizeWindow(self.display, w, client.x, client.y, client.w as u32, client.h as u32);
[INFO] [stdout]     |             -----------------               ^ expected `u64`, found `i32`
[INFO] [stdout]     |             |
[INFO] [stdout]     |             arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/x11-2.21.0/src/xlib.rs:554:10
[INFO] [stdout]     |
[INFO] [stdout] 554 |   pub fn XMoveResizeWindow (_6: *mut Display, _5: c_ulong, _4: c_int, _3: c_int, _2: c_uint, _1: c_uint) -> c_int,
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to a `u64` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 450 |             XMoveResizeWindow(self.display, w.try_into().unwrap(), client.x, client.y, client.w as u32, client.h as u32);
[INFO] [stdout]     |                                              ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1591:28
[INFO] [stdout]      |
[INFO] [stdout] 1591 |                 .unwrap_or(head);
[INFO] [stdout]      |                  --------- ^^^^ types differ in mutability
[INFO] [stdout]      |                  |
[INFO] [stdout]      |                  arguments to this method are incorrect
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] help: the return type of this call is `*const types::Client` due to the type of the argument passed
[INFO] [stdout]     --> src/main.rs:1589:25
[INFO] [stdout]      |
[INFO] [stdout] 1589 |               let start = self.focused
[INFO] [stdout]      |  _________________________^
[INFO] [stdout] 1590 | |                 .and_then(|w| self.clients_by_window.get(&w).copied())
[INFO] [stdout] 1591 | |                 .unwrap_or(head);
[INFO] [stdout]      | |____________________________----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              this argument influences the return type of `unwrap_or`
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/option.rs:1035:17
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1599:21
[INFO] [stdout]      |
[INFO] [stdout] 1599 |                     &**next as *const Client
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1601:21
[INFO] [stdout]      |
[INFO] [stdout] 1601 |                     head
[INFO] [stdout]      |                     ^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1630:28
[INFO] [stdout]      |
[INFO] [stdout] 1630 |                 .unwrap_or(head);
[INFO] [stdout]      |                  --------- ^^^^ types differ in mutability
[INFO] [stdout]      |                  |
[INFO] [stdout]      |                  arguments to this method are incorrect
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] help: the return type of this call is `*const types::Client` due to the type of the argument passed
[INFO] [stdout]     --> src/main.rs:1628:25
[INFO] [stdout]      |
[INFO] [stdout] 1628 |               let start = self.focused
[INFO] [stdout]      |  _________________________^
[INFO] [stdout] 1629 | |                 .and_then(|w| self.clients_by_window.get(&w).copied())
[INFO] [stdout] 1630 | |                 .unwrap_or(head);
[INFO] [stdout]      | |____________________________----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              this argument influences the return type of `unwrap_or`
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/option.rs:1035:17
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1650:21
[INFO] [stdout]      |
[INFO] [stdout] 1650 |                     prev_ptr
[INFO] [stdout]      |                     ^^^^^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1657:21
[INFO] [stdout]      |
[INFO] [stdout] 1657 |                     tail
[INFO] [stdout]      |                     ^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 173 |             net_active_window: intern_atom!("_NET_ACTIVE_WINDOW"),
[INFO] [stdout]     |                                ---------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 165 |     unsafe fn init_atoms(dpy: *mut Display) -> Atoms {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::wm_functions`
[INFO] [stdout]  --> src/parser.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::wm_functions::*;
[INFO] [stdout]   |            ^^^^^^^^^^^^ could not find `wm_functions` in the crate root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 174 |             net_current_desktop: intern_atom!("_NET_CURRENT_DESKTOP"),
[INFO] [stdout]     |                                  ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 175 |             net_supported: intern_atom!("_NET_SUPPORTED"),
[INFO] [stdout]     |                            ------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 176 |             net_wm_state: intern_atom!("_NET_WM_STATE"),
[INFO] [stdout]     |                           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 177 |             net_wm_state_fullscreen: intern_atom!("_NET_WM_STATE_FULLSCREEN"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 178 |             wm_state: intern_atom!("WM_STATE"),
[INFO] [stdout]     |                       ------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 179 |             net_wm_window_type: intern_atom!("_NET_WM_WINDOW_TYPE"),
[INFO] [stdout]     |                                 ----------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 180 |             net_workarea: intern_atom!("_NET_WORKAREA"),
[INFO] [stdout]     |                           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 181 |             wm_delete_window: intern_atom!("WM_DELETE_WINDOW"),
[INFO] [stdout]     |                               -------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 182 |             net_wm_strut: intern_atom!("_NET_WM_STRUT"),
[INFO] [stdout]     |                           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 183 |             net_wm_strut_partial: intern_atom!("_NET_WM_STRUT_PARTIAL"),
[INFO] [stdout]     |                                   ------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 184 |             net_supporting_wm_check: intern_atom!("_NET_SUPPORTING_WM_CHECK"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 185 |             net_wm_name: intern_atom!("_NET_WM_NAME"),
[INFO] [stdout]     |                          ---------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 186 |             utf8_string: intern_atom!("UTF8_STRING"),
[INFO] [stdout]     |                          --------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 187 |             net_wm_desktop: intern_atom!("_NET_WM_DESKTOP"),
[INFO] [stdout]     |                             ------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 188 |             net_client_list: intern_atom!("_NET_CLIENT_LIST"),
[INFO] [stdout]     |                              -------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 189 |             net_frame_extents: intern_atom!("_NET_FRAME_EXTENTS"),
[INFO] [stdout]     |                                ---------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 190 |             net_number_of_desktops: intern_atom!("_NET_NUMBER_OF_DESKTOPS"),
[INFO] [stdout]     |                                     --------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 191 |             net_desktop_names: intern_atom!("_NET_DESKTOP_NAMES"),
[INFO] [stdout]     |                                ---------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 192 |             net_wm_pid: intern_atom!("_NET_WM_PID"),
[INFO] [stdout]     |                         --------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 193 |             net_wm_window_type_dock: intern_atom!("_NET_WM_WINDOW_TYPE_DOCK"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 194 |             net_wm_window_type_utility: intern_atom!("_NET_WM_WINDOW_TYPE_UTILITY"),
[INFO] [stdout]     |                                         ------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 195 |             net_wm_window_type_dialog: intern_atom!("_NET_WM_WINDOW_TYPE_DIALOG"),
[INFO] [stdout]     |                                        ------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 196 |             net_wm_window_type_toolbar: intern_atom!("_NET_WM_WINDOW_TYPE_TOOLBAR"),
[INFO] [stdout]     |                                         ------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 197 |             net_wm_window_type_splash: intern_atom!("_NET_WM_WINDOW_TYPE_SPLASH"),
[INFO] [stdout]     |                                        ------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 198 |             net_wm_window_type_popup_menu: intern_atom!("_NET_WM_WINDOW_TYPE_POPUP_MENU"),
[INFO] [stdout]     |                                            ---------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 199 |             net_wm_window_type_menu: intern_atom!("_NET_WM_WINDOW_TYPE_MENU"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 200 |             net_wm_window_type_dropdown_menu: intern_atom!("_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"),
[INFO] [stdout]     |                                               ------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 201 |             net_wm_window_type_tooltip: intern_atom!("_NET_WM_WINDOW_TYPE_TOOLTIP"),
[INFO] [stdout]     |                                         ------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 202 |             net_wm_window_type_notification: intern_atom!("_NET_WM_WINDOW_TYPE_NOTIFICATION"),
[INFO] [stdout]     |                                              ------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 203 |             net_wm_state_modal: intern_atom!("_NET_WM_STATE_MODAL"),
[INFO] [stdout]     |                                 ----------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 204 |             wm_take_focus: intern_atom!("WM_TAKE_FOCUS"),
[INFO] [stdout]     |                            ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 205 |             wm_protocols: intern_atom!("WM_PROTOCOLS"),
[INFO] [stdout]     |                           ---------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetErrorText` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |         XGetErrorText(display, (*ee).error_code as i32, error_text.as_mut_ptr(), 1024);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 |     unsafe extern "C" fn error_handler(display: *mut Display, ee: *mut XErrorEvent) -> i32 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:216:32
[INFO] [stdout]     |
[INFO] [stdout] 216 |         XGetErrorText(display, (*ee).error_code as i32, error_text.as_mut_ptr(), 1024);
[INFO] [stdout]     |                                ^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:218:25
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let error_str = std::ffi::CStr::from_ptr(error_text.as_ptr())
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xinerama::XineramaQueryScreens` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:230:27
[INFO] [stdout]     |
[INFO] [stdout] 230 |         let screen_info = XineramaQueryScreens(self.display, &mut n_screens);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:226:5
[INFO] [stdout]     |
[INFO] [stdout] 226 |     unsafe fn update_monitors(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:234:28
[INFO] [stdout]     |
[INFO] [stdout] 234 |                 let info = *screen_info.offset(i);
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:234:29
[INFO] [stdout]     |
[INFO] [stdout] 234 |                 let info = *screen_info.offset(i);
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |             XFree(screen_info as *mut _);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDefaultScreen` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:250:26
[INFO] [stdout]     |
[INFO] [stdout] 250 |             let screen = XDefaultScreen(self.display);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDisplayWidth` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:254:20
[INFO] [stdout]     |
[INFO] [stdout] 254 |                 w: XDisplayWidth(self.display, screen),
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDisplayHeight` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:255:20
[INFO] [stdout]     |
[INFO] [stdout] 255 |                 h: XDisplayHeight(self.display, screen),
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 | /         XChangeProperty(
[INFO] [stdout] 300 | |             self.display,
[INFO] [stdout] 301 | |             self.root,
[INFO] [stdout] 302 | |             self.atoms.net_supported,
[INFO] [stdout] ...   |
[INFO] [stdout] 307 | |             supported_atoms.len() as i32,
[INFO] [stdout] 308 | |         );
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:283:5
[INFO] [stdout]     |
[INFO] [stdout] 283 |     unsafe fn setup_ewmh(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:312:9
[INFO] [stdout]     |
[INFO] [stdout] 312 | /         XChangeProperty(
[INFO] [stdout] 313 | |             self.display,
[INFO] [stdout] 314 | |             self.root,
[INFO] [stdout] 315 | |             self.atoms.net_number_of_desktops,
[INFO] [stdout] ...   |
[INFO] [stdout] 320 | |             1,
[INFO] [stdout] 321 | |         );
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         XChangeProperty(
[INFO] [stdout] 326 | |             self.display,
[INFO] [stdout] 327 | |             self.root,
[INFO] [stdout] 328 | |             self.atoms.net_current_desktop,
[INFO] [stdout] ...   |
[INFO] [stdout] 333 | |             1,
[INFO] [stdout] 334 | |         );
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XUngrabKey` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |         XUngrabKey(self.display, AnyKey as i32, AnyModifier, self.root);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     unsafe fn grab_keys(&self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XKeysymToKeycode` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:342:31
[INFO] [stdout]     |
[INFO] [stdout] 342 |                 let keycode = XKeysymToKeycode(self.display, binding.keysym);
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGrabKey` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:344:21
[INFO] [stdout]     |
[INFO] [stdout] 344 | /                     XGrabKey(
[INFO] [stdout] 345 | |                         self.display,
[INFO] [stdout] 346 | |                         keycode as i32,
[INFO] [stdout] 347 | |                         binding.mods,
[INFO] [stdout] ...   |
[INFO] [stdout] 351 | |                         GrabModeAsync
[INFO] [stdout] 352 | |                     );
[INFO] [stdout]     | |_____________________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XQueryTree` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:385:12
[INFO] [stdout]     |
[INFO] [stdout] 385 |           if XQueryTree(
[INFO] [stdout]     |  ____________^
[INFO] [stdout] 386 | |             self.display,
[INFO] [stdout] 387 | |             self.root,
[INFO] [stdout] 388 | |             &mut root_return,
[INFO] [stdout] ...   |
[INFO] [stdout] 391 | |             &mut nchildren
[INFO] [stdout] 392 | |         ) != 0 && !children.is_null() {
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:379:5
[INFO] [stdout]     |
[INFO] [stdout] 379 |     unsafe fn scan_windows(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:394:27
[INFO] [stdout]     |
[INFO] [stdout] 394 |                 let win = *children.offset(i);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:394:28
[INFO] [stdout]     |
[INFO] [stdout] 394 |                 let win = *children.offset(i);
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::zeroed` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:395:49
[INFO] [stdout]     |
[INFO] [stdout] 395 |                 let mut wa: XWindowAttributes = std::mem::zeroed();
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowAttributes` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:396:20
[INFO] [stdout]     |
[INFO] [stdout] 396 |                 if XGetWindowAttributes(self.display, win, &mut wa) != 0 {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::manage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:398:25
[INFO] [stdout]     |
[INFO] [stdout] 398 |                         self.manage_window(win);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:402:13
[INFO] [stdout]     |
[INFO] [stdout] 402 |             XFree(children as *mut _);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:503:15
[INFO] [stdout]     |
[INFO] [stdout] 503 |         match (*event).get_type() {
[INFO] [stdout]     |               ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:502:5
[INFO] [stdout]     |
[INFO] [stdout] 502 |     unsafe fn handle_event(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_key_press` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:504:25
[INFO] [stdout]     |
[INFO] [stdout] 504 |             KeyPress => self.handle_key_press(event),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_button_press` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:505:28
[INFO] [stdout]     |
[INFO] [stdout] 505 |             ButtonPress => self.handle_button_press(event),
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_button_release` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:506:30
[INFO] [stdout]     |
[INFO] [stdout] 506 |             ButtonRelease => self.handle_button_release(event),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_motion_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:507:29
[INFO] [stdout]     |
[INFO] [stdout] 507 |             MotionNotify => self.handle_motion_notify(event),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_configure_request` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:508:33
[INFO] [stdout]     |
[INFO] [stdout] 508 |             ConfigureRequest => self.handle_configure_request(event),
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_map_request` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:509:27
[INFO] [stdout]     |
[INFO] [stdout] 509 |             MapRequest => self.handle_map_request(event),
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_unmap_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:510:28
[INFO] [stdout]     |
[INFO] [stdout] 510 |             UnmapNotify => self.handle_unmap_notify(event),
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_destroy_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:511:30
[INFO] [stdout]     |
[INFO] [stdout] 511 |             DestroyNotify => self.handle_destroy_notify(event),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_enter_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:512:28
[INFO] [stdout]     |
[INFO] [stdout] 512 |             EnterNotify => self.handle_enter_notify(event),
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_property_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:513:31
[INFO] [stdout]     |
[INFO] [stdout] 513 |             PropertyNotify => self.handle_property_notify(event),
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_client_message` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:514:30
[INFO] [stdout]     |
[INFO] [stdout] 514 |             ClientMessage => self.handle_client_message(event),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:520:36
[INFO] [stdout]     |
[INFO] [stdout] 520 |         let xkey = XKeyEvent::from((*event).key);
[INFO] [stdout]     |                                    ^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:519:5
[INFO] [stdout]     |
[INFO] [stdout] 519 |     unsafe fn handle_key_press(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:520:36
[INFO] [stdout]     |
[INFO] [stdout] 520 |         let xkey = XKeyEvent::from((*event).key);
[INFO] [stdout]     |                                    ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XKeycodeToKeysym` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:521:22
[INFO] [stdout]     |
[INFO] [stdout] 521 |         let keysym = XKeycodeToKeysym(self.display, xkey.keycode as u8, 0);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:554:42
[INFO] [stdout]     |
[INFO] [stdout] 554 |         let xbutton = XButtonEvent::from((*event).button);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:553:5
[INFO] [stdout]     |
[INFO] [stdout] 553 |     unsafe fn handle_button_press(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:554:42
[INFO] [stdout]     |
[INFO] [stdout] 554 |         let xbutton = XButtonEvent::from((*event).button);
[INFO] [stdout]     |                                          ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::find_client_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:557:26
[INFO] [stdout]     |
[INFO] [stdout] 557 |         let client_win = self.find_client_window(xbutton.subwindow);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::set_input_focus` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:564:9
[INFO] [stdout]     |
[INFO] [stdout] 564 |         self.set_input_focus(client_win, true, false);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:569:35
[INFO] [stdout]     |
[INFO] [stdout] 569 |                 let client = &mut *client_ptr;
[INFO] [stdout]     |                                   ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:606:42
[INFO] [stdout]     |
[INFO] [stdout] 606 |         let xmotion = XMotionEvent::from((*event).motion);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:601:5
[INFO] [stdout]     |
[INFO] [stdout] 601 |     unsafe fn handle_motion_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:606:42
[INFO] [stdout]     |
[INFO] [stdout] 606 |         let xmotion = XMotionEvent::from((*event).motion);
[INFO] [stdout]     |                                          ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:610:31
[INFO] [stdout]     |
[INFO] [stdout] 610 |             let client = &mut *client_ptr;
[INFO] [stdout]     |                               ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:619:21
[INFO] [stdout]     |
[INFO] [stdout] 619 |                     XMoveWindow(self.display, drag_win, client.x, client.y);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:627:21
[INFO] [stdout]     |
[INFO] [stdout] 627 |                     XResizeWindow(self.display, drag_win, client.w as u32, client.h as u32);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:635:48
[INFO] [stdout]     |
[INFO] [stdout] 635 |         let xce = XConfigureRequestEvent::from((*event).configure_request);
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:634:5
[INFO] [stdout]     |
[INFO] [stdout] 634 |     unsafe fn handle_configure_request(&self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:635:48
[INFO] [stdout]     |
[INFO] [stdout] 635 |         let xce = XConfigureRequestEvent::from((*event).configure_request);
[INFO] [stdout]     |                                                ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::zeroed` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:636:38
[INFO] [stdout]     |
[INFO] [stdout] 636 |         let mut wc: XWindowChanges = std::mem::zeroed();
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XConfigureWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:646:9
[INFO] [stdout]     |
[INFO] [stdout] 646 |         XConfigureWindow(self.display, xce.window, xce.value_mask as u32, &mut wc);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:650:42
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let xmr = XMapRequestEvent::from((*event).map_request);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:649:5
[INFO] [stdout]     |
[INFO] [stdout] 649 |     unsafe fn handle_map_request(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:650:42
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let xmr = XMapRequestEvent::from((*event).map_request);
[INFO] [stdout]     |                                          ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::manage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:657:9
[INFO] [stdout]     |
[INFO] [stdout] 657 |         self.manage_window(xmr.window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::tile` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:658:9
[INFO] [stdout]     |
[INFO] [stdout] 658 |         self.tile();
[INFO] [stdout]     |         ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:659:9
[INFO] [stdout]     |
[INFO] [stdout] 659 |         self.update_borders();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:663:37
[INFO] [stdout]     |
[INFO] [stdout] 663 |         let xun = XUnmapEvent::from((*event).unmap);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:662:5
[INFO] [stdout]     |
[INFO] [stdout] 662 |     unsafe fn handle_unmap_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:663:37
[INFO] [stdout]     |
[INFO] [stdout] 663 |         let xun = XUnmapEvent::from((*event).unmap);
[INFO] [stdout]     |                                     ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::unmanage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:664:9
[INFO] [stdout]     |
[INFO] [stdout] 664 |         self.unmanage_window(xun.window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:668:45
[INFO] [stdout]     |
[INFO] [stdout] 668 |         let xdn = XDestroyWindowEvent::from((*event).destroy_window);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:667:5
[INFO] [stdout]     |
[INFO] [stdout] 667 |     unsafe fn handle_destroy_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:668:45
[INFO] [stdout]     |
[INFO] [stdout] 668 |         let xdn = XDestroyWindowEvent::from((*event).destroy_window);
[INFO] [stdout]     |                                             ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::unmanage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:669:9
[INFO] [stdout]     |
[INFO] [stdout] 669 |         self.unmanage_window(xdn.window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:691:35
[INFO] [stdout]     |
[INFO] [stdout] 691 |                 let client = &mut *client_ptr;
[INFO] [stdout]     |                                   ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:672:5
[INFO] [stdout]     |
[INFO] [stdout] 672 |     unsafe fn unmanage_window(&mut self, w: Window) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:695:25
[INFO] [stdout]     |
[INFO] [stdout] 695 |                         (*prev_ptr).next = client.next.take();
[INFO] [stdout]     |                         ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:701:26
[INFO] [stdout]     |
[INFO] [stdout] 701 |                     drop(Box::from_raw(client_ptr));
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::focus_prev` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:713:13
[INFO] [stdout]     |
[INFO] [stdout] 713 |             self.focus_prev();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::tile` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:716:9
[INFO] [stdout]     |
[INFO] [stdout] 716 |         self.tile();
[INFO] [stdout]     |         ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:717:9
[INFO] [stdout]     |
[INFO] [stdout] 717 |         self.update_borders();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/types.rs:3:42
[INFO] [stdout]   |
[INFO] [stdout] 3 | use x11::xlib::{Window, KeySym, KeyCode, Display};
[INFO] [stdout]   |                                          ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:721:40
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let xev = XCrossingEvent::from((*event).crossing);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:720:5
[INFO] [stdout]     |
[INFO] [stdout] 720 |     unsafe fn handle_enter_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/parser.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:721:40
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let xev = XCrossingEvent::from((*event).crossing);
[INFO] [stdout]     |                                        ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::set_input_focus` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:724:13
[INFO] [stdout]     |
[INFO] [stdout] 724 |             self.set_input_focus(xev.window, false, false);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:733:45
[INFO] [stdout]     |
[INFO] [stdout] 733 |         let xev = XClientMessageEvent::from((*event).client_message);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:732:5
[INFO] [stdout]     |
[INFO] [stdout] 732 |     unsafe fn handle_client_message(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:733:45
[INFO] [stdout]     |
[INFO] [stdout] 733 |         let xev = XClientMessageEvent::from((*event).client_message);
[INFO] [stdout]     |                                             ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ffi::CString`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::ffi::CString;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:741:77
[INFO] [stdout]     |
[INFO] [stdout] 741 |                     let should_fullscreen = action == 1 || (action == 2 && !(*client_ptr).fullscreen);
[INFO] [stdout]     |                                                                             ^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::apply_fullscreen` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:742:21
[INFO] [stdout]     |
[INFO] [stdout] 742 |                     self.apply_fullscreen(xev.window, should_fullscreen);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_struts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:895:9
[INFO] [stdout]     |
[INFO] [stdout] 895 |         self.update_struts();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:894:5
[INFO] [stdout]     |
[INFO] [stdout] 894 |     unsafe fn tile(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:911:31
[INFO] [stdout]     |
[INFO] [stdout] 911 |                 let client = &*client_ptr;
[INFO] [stdout]     |                               ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:915:27
[INFO] [stdout]     |
[INFO] [stdout] 915 |                 current = (*client_ptr).next.as_mut().map(|b| &mut **b as *mut Client);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:944:31
[INFO] [stdout]     |
[INFO] [stdout] 944 |             let master = &mut *tileable[0];
[INFO] [stdout]     |                               ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:951:13
[INFO] [stdout]     |
[INFO] [stdout] 951 | /             XMoveResizeWindow(
[INFO] [stdout] 952 | |                 self.display,
[INFO] [stdout] 953 | |                 master.win,
[INFO] [stdout] 954 | |                 master.x,
[INFO] [stdout] ...   |
[INFO] [stdout] 957 | |                 master.h as u32,
[INFO] [stdout] 958 | |             );
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:959:13
[INFO] [stdout]     |
[INFO] [stdout] 959 |             XSetWindowBorderWidth(self.display, master.win, self.config.border_width as u32);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:970:35
[INFO] [stdout]     |
[INFO] [stdout] 970 |                 let client = &mut *client_ptr;
[INFO] [stdout]     |                                   ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:984:17
[INFO] [stdout]     |
[INFO] [stdout] 984 | /                 XMoveResizeWindow(
[INFO] [stdout] 985 | |                     self.display,
[INFO] [stdout] 986 | |                     client.win,
[INFO] [stdout] 987 | |                     client.x,
[INFO] [stdout] ...   |
[INFO] [stdout] 990 | |                     client.h as u32,
[INFO] [stdout] 991 | |                 );
[INFO] [stdout]     | |_________________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:992:17
[INFO] [stdout]     |
[INFO] [stdout] 992 |                 XSetWindowBorderWidth(self.display, client.win, self.config.border_width as u32);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:996:9
[INFO] [stdout]     |
[INFO] [stdout] 996 |         self.update_borders();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1016:27
[INFO] [stdout]      |
[INFO] [stdout] 1016 |             let client = &*client_ptr;
[INFO] [stdout]      |                           ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1012:5
[INFO] [stdout]      |
[INFO] [stdout] 1012 |     unsafe fn update_borders(&self) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorder` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1023:13
[INFO] [stdout]      |
[INFO] [stdout] 1023 |             XSetWindowBorder(self.display, client.win, color as u64);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1030:27
[INFO] [stdout]      |
[INFO] [stdout] 1030 |             let client = &*client_ptr;
[INFO] [stdout]      |                           ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1028:5
[INFO] [stdout]      |
[INFO] [stdout] 1028 |     unsafe fn set_input_focus(&mut self, w: Window, raise_win: bool, warp: bool) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XRaiseWindow` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1033:17
[INFO] [stdout]      |
[INFO] [stdout] 1033 |                 XRaiseWindow(self.display, w);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetInputFocus` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1036:13
[INFO] [stdout]      |
[INFO] [stdout] 1036 |             XSetInputFocus(self.display, w, RevertToPointerRoot, CurrentTime);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XWarpPointer` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1040:17
[INFO] [stdout]      |
[INFO] [stdout] 1040 | /                 XWarpPointer(
[INFO] [stdout] 1041 | |                     self.display,
[INFO] [stdout] 1042 | |                     0,
[INFO] [stdout] 1043 | |                     w,
[INFO] [stdout] ...    |
[INFO] [stdout] 1046 | |                     client.h / 2,
[INFO] [stdout] 1047 | |                 );
[INFO] [stdout]      | |_________________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1051:13
[INFO] [stdout]      |
[INFO] [stdout] 1051 | /             XChangeProperty(
[INFO] [stdout] 1052 | |                 self.display,
[INFO] [stdout] 1053 | |                 self.root,
[INFO] [stdout] 1054 | |                 self.atoms.net_active_window,
[INFO] [stdout] ...    |
[INFO] [stdout] 1059 | |                 1,
[INFO] [stdout] 1060 | |             );
[INFO] [stdout]      | |_____________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1062:13
[INFO] [stdout]      |
[INFO] [stdout] 1062 |             self.update_borders();
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1070:27
[INFO] [stdout]      |
[INFO] [stdout] 1070 |             let client = &*client_ptr;
[INFO] [stdout]      |                           ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1066:5
[INFO] [stdout]      |
[INFO] [stdout] 1066 |     unsafe fn focus_prev(&mut self) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::set_input_focus` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1072:17
[INFO] [stdout]      |
[INFO] [stdout] 1072 |                 self.set_input_focus(client.win, true, false);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1229:31
[INFO] [stdout]      |
[INFO] [stdout] 1229 |             let client = &mut *client_ptr;
[INFO] [stdout]      |                               ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1227:5
[INFO] [stdout]      |
[INFO] [stdout] 1227 |     unsafe fn apply_fullscreen(&mut self, w: Window, fullscreen: bool) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1251:17
[INFO] [stdout]      |
[INFO] [stdout] 1251 |                 XSetWindowBorderWidth(self.display, w, 0);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1252:17
[INFO] [stdout]      |
[INFO] [stdout] 1252 |                 XMoveResizeWindow(self.display, w, client.x, client.y, client.w as u32, client.h as u32);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XRaiseWindow` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1253:17
[INFO] [stdout]      |
[INFO] [stdout] 1253 |                 XRaiseWindow(self.display, w);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1261:17
[INFO] [stdout]      |
[INFO] [stdout] 1261 |                 XSetWindowBorderWidth(self.display, w, self.config.border_width as u32);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::tile` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1262:17
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                 self.tile();
[INFO] [stdout]      |                 ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1267:17
[INFO] [stdout]      |
[INFO] [stdout] 1267 | /                 XChangeProperty(
[INFO] [stdout] 1268 | |                     self.display,
[INFO] [stdout] 1269 | |                     w,
[INFO] [stdout] 1270 | |                     self.atoms.net_wm_state,
[INFO] [stdout] ...    |
[INFO] [stdout] 1275 | |                     1,
[INFO] [stdout] 1276 | |                 );
[INFO] [stdout]      | |_________________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDeleteProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1278:17
[INFO] [stdout]      |
[INFO] [stdout] 1278 |                 XDeleteProperty(self.display, w, self.atoms.net_wm_state);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1281:13
[INFO] [stdout]      |
[INFO] [stdout] 1281 |             self.update_borders();
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1293:12
[INFO] [stdout]      |
[INFO] [stdout] 1293 |           if XGetWindowProperty(
[INFO] [stdout]      |  ____________^
[INFO] [stdout] 1294 | |             self.display,
[INFO] [stdout] 1295 | |             w,
[INFO] [stdout] 1296 | |             self.atoms.net_wm_window_type,
[INFO] [stdout] ...    |
[INFO] [stdout] 1305 | |             &mut prop,
[INFO] [stdout] 1306 | |         ) == 0 && !prop.is_null() {
[INFO] [stdout]      | |_________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1285:5
[INFO] [stdout]      |
[INFO] [stdout] 1285 |     unsafe fn window_should_float(&self, w: Window) -> bool {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1307:25
[INFO] [stdout]      |
[INFO] [stdout] 1307 |             let types = std::slice::from_raw_parts(prop as *const u64, n_items as usize);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1318:21
[INFO] [stdout]      |
[INFO] [stdout] 1318 |                     XFree(prop as *mut _);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1322:13
[INFO] [stdout]      |
[INFO] [stdout] 1322 |             XFree(prop as *mut _);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::zeroed` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1326:34
[INFO] [stdout]      |
[INFO] [stdout] 1326 |         let mut ch: XClassHint = std::mem::zeroed();
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetClassHint` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1327:12
[INFO] [stdout]      |
[INFO] [stdout] 1327 |         if XGetClassHint(self.display, w, &mut ch) != 0 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1334:21
[INFO] [stdout]      |
[INFO] [stdout] 1334 |                     std::ffi::CStr::from_ptr(ch.res_class).to_string_lossy()
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1340:21
[INFO] [stdout]      |
[INFO] [stdout] 1340 |                     std::ffi::CStr::from_ptr(ch.res_name).to_string_lossy()
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1347:25
[INFO] [stdout]      |
[INFO] [stdout] 1347 |                         XFree(ch.res_class as *mut _);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1350:25
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         XFree(ch.res_name as *mut _);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1357:17
[INFO] [stdout]      |
[INFO] [stdout] 1357 |                 XFree(ch.res_class as *mut _);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1360:17
[INFO] [stdout]      |
[INFO] [stdout] 1360 |                 XFree(ch.res_name as *mut _);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetTransientForHint` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1366:12
[INFO] [stdout]      |
[INFO] [stdout] 1366 |         if XGetTransientForHint(self.display, w, &mut transient) != 0 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1381:12
[INFO] [stdout]      |
[INFO] [stdout] 1381 |           if XGetWindowProperty(
[INFO] [stdout]      |  ____________^
[INFO] [stdout] 1382 | |             self.display,
[INFO] [stdout] 1383 | |             w,
[INFO] [stdout] 1384 | |             self.atoms.net_wm_state,
[INFO] [stdout] ...    |
[INFO] [stdout] 1393 | |             &mut prop,
[INFO] [stdout] 1394 | |         ) == 0 && !prop.is_null() {
[INFO] [stdout]      | |_________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1373:5
[INFO] [stdout]      |
[INFO] [stdout] 1373 |     unsafe fn window_should_start_fullscreen(&self, w: Window) -> bool {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1395:26
[INFO] [stdout]      |
[INFO] [stdout] 1395 |             let states = std::slice::from_raw_parts(prop as *const u64, n_items as usize);
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1398:21
[INFO] [stdout]      |
[INFO] [stdout] 1398 |                     XFree(prop as *mut _);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1402:13
[INFO] [stdout]      |
[INFO] [stdout] 1402 |             XFree(prop as *mut _);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1415:12
[INFO] [stdout]      |
[INFO] [stdout] 1415 |           if XGetWindowProperty(
[INFO] [stdout]      |  ____________^
[INFO] [stdout] 1416 | |             self.display,
[INFO] [stdout] 1417 | |             w,
[INFO] [stdout] 1418 | |             self.atoms.net_wm_window_type,
[INFO] [stdout] ...    |
[INFO] [stdout] 1427 | |             &mut prop,
[INFO] [stdout] 1428 | |         ) == 0 && !prop.is_null() {
[INFO] [stdout]      | |_________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1408:5
[INFO] [stdout]      |
[INFO] [stdout] 1408 |     unsafe fn window_is_dock(&self, w: Window) -> bool {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1429:25
[INFO] [stdout]      |
[INFO] [stdout] 1429 |             let types = std::slice::from_raw_parts(prop as *const u64, n_items as usize);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1432:21
[INFO] [stdout]      |
[INFO] [stdout] 1432 |                     XFree(prop as *mut _);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1436:13
[INFO] [stdout]      |
[INFO] [stdout] 1436 |             XFree(prop as *mut _);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XQueryTree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1471:12
[INFO] [stdout]      |
[INFO] [stdout] 1471 |         if XQueryTree(self.display, w, &mut root_return, &mut parent, &mut children, &mut nchildren) != 0 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1456:5
[INFO] [stdout]      |
[INFO] [stdout] 1456 |     unsafe fn find_client_window(&self, w: Window) -> Window {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1473:17
[INFO] [stdout]      |
[INFO] [stdout] 1473 |                 XFree(children as *mut _);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::find_client_window` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1476:24
[INFO] [stdout]      |
[INFO] [stdout] 1476 |                 return self.find_client_window(parent);
[INFO] [stdout]      |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]     --> src/main.rs:2083:17
[INFO] [stdout]      |
[INFO] [stdout] 2083 |             let head = match &mut self.workspaces[self.current_ws] {
[INFO] [stdout]      |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]     --> src/main.rs:2106:17
[INFO] [stdout]      |
[INFO] [stdout] 2106 |             let head = match &mut self.workspaces[self.current_ws] {
[INFO] [stdout]      |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0133, E0277, E0308, E0432, E0592.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `twmx` (bin "twmx") due to 12 previous errors; 167 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0592]: duplicate definitions with name `focus_prev`
[INFO] [stdout]     --> src/main.rs:1621:5
[INFO] [stdout]      |
[INFO] [stdout] 1066 |     unsafe fn focus_prev(&mut self) {
[INFO] [stdout]      |     ------------------------------- other definition for `focus_prev`
[INFO] [stdout] ...
[INFO] [stdout] 1621 |     pub fn focus_prev(&mut self) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `focus_prev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:113:35
[INFO] [stdout]     |
[INFO] [stdout] 113 |             XSetErrorHandler(Some(Self::other_wm_error_handler));
[INFO] [stdout]     |                              ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected "C" fn, found "Rust" fn
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected fn pointer `unsafe extern "C" fn(_, _) -> _`
[INFO] [stdout]                   found fn item `unsafe fn(_, _) -> _ {WindowManager::other_wm_error_handler}`
[INFO] [stdout] help: the type constructed contains `unsafe fn(*mut _XDisplay, *mut x11::xlib::XErrorEvent) -> i32 {WindowManager::other_wm_error_handler}` due to the type of the argument passed
[INFO] [stdout]    --> src/main.rs:113:30
[INFO] [stdout]     |
[INFO] [stdout] 113 |             XSetErrorHandler(Some(Self::other_wm_error_handler));
[INFO] [stdout]     |                              ^^^^^----------------------------^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this argument influences the type of `Some`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/option.rs:605:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `types::Scratchpad: Copy` is not satisfied
[INFO] [stdout]    --> src/main.rs:145:31
[INFO] [stdout]     |
[INFO] [stdout] 145 |                 scratchpads: [Scratchpad::new(); MAX_SCRATCHPADS],
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `types::Scratchpad`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout]     = help: consider using `core::array::from_fn` to initialize the array
[INFO] [stdout]     = help: see https://doc.rust-lang.org/stable/std/array/fn.from_fn.html for more information
[INFO] [stdout] help: consider annotating `types::Scratchpad` with `#[derive(Copy)]`
[INFO] [stdout]    --> src/types.rs:214:1
[INFO] [stdout]     |
[INFO] [stdout] 214 + #[derive(Copy)]
[INFO] [stdout] 215 | pub struct Scratchpad {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:359:37
[INFO] [stdout]     |
[INFO] [stdout] 359 |         XUngrabButton(self.display, AnyButton, AnyModifier, self.root);
[INFO] [stdout]     |         -------------               ^^^^^^^^^ expected `u32`, found `i32`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/x11-2.21.0/src/xlib.rs:734:10
[INFO] [stdout]     |
[INFO] [stdout] 734 |   pub fn XUngrabButton (_4: *mut Display, _3: c_uint, _2: c_uint, _1: c_ulong) -> c_int,
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to a `u32` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 359 |         XUngrabButton(self.display, AnyButton.try_into().unwrap(), AnyModifier, self.root);
[INFO] [stdout]     |                                              ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:450:45
[INFO] [stdout]     |
[INFO] [stdout] 450 |             XMoveResizeWindow(self.display, w, client.x, client.y, client.w as u32, client.h as u32);
[INFO] [stdout]     |             -----------------               ^ expected `u64`, found `i32`
[INFO] [stdout]     |             |
[INFO] [stdout]     |             arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/x11-2.21.0/src/xlib.rs:554:10
[INFO] [stdout]     |
[INFO] [stdout] 554 |   pub fn XMoveResizeWindow (_6: *mut Display, _5: c_ulong, _4: c_int, _3: c_int, _2: c_uint, _1: c_uint) -> c_int,
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to a `u64` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 450 |             XMoveResizeWindow(self.display, w.try_into().unwrap(), client.x, client.y, client.w as u32, client.h as u32);
[INFO] [stdout]     |                                              ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1591:28
[INFO] [stdout]      |
[INFO] [stdout] 1591 |                 .unwrap_or(head);
[INFO] [stdout]      |                  --------- ^^^^ types differ in mutability
[INFO] [stdout]      |                  |
[INFO] [stdout]      |                  arguments to this method are incorrect
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] help: the return type of this call is `*const types::Client` due to the type of the argument passed
[INFO] [stdout]     --> src/main.rs:1589:25
[INFO] [stdout]      |
[INFO] [stdout] 1589 |               let start = self.focused
[INFO] [stdout]      |  _________________________^
[INFO] [stdout] 1590 | |                 .and_then(|w| self.clients_by_window.get(&w).copied())
[INFO] [stdout] 1591 | |                 .unwrap_or(head);
[INFO] [stdout]      | |____________________________----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              this argument influences the return type of `unwrap_or`
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/option.rs:1035:17
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1599:21
[INFO] [stdout]      |
[INFO] [stdout] 1599 |                     &**next as *const Client
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1601:21
[INFO] [stdout]      |
[INFO] [stdout] 1601 |                     head
[INFO] [stdout]      |                     ^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1630:28
[INFO] [stdout]      |
[INFO] [stdout] 1630 |                 .unwrap_or(head);
[INFO] [stdout]      |                  --------- ^^^^ types differ in mutability
[INFO] [stdout]      |                  |
[INFO] [stdout]      |                  arguments to this method are incorrect
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] help: the return type of this call is `*const types::Client` due to the type of the argument passed
[INFO] [stdout]     --> src/main.rs:1628:25
[INFO] [stdout]      |
[INFO] [stdout] 1628 |               let start = self.focused
[INFO] [stdout]      |  _________________________^
[INFO] [stdout] 1629 | |                 .and_then(|w| self.clients_by_window.get(&w).copied())
[INFO] [stdout] 1630 | |                 .unwrap_or(head);
[INFO] [stdout]      | |____________________________----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              this argument influences the return type of `unwrap_or`
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/option.rs:1035:17
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1650:21
[INFO] [stdout]      |
[INFO] [stdout] 1650 |                     prev_ptr
[INFO] [stdout]      |                     ^^^^^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/main.rs:1657:21
[INFO] [stdout]      |
[INFO] [stdout] 1657 |                     tail
[INFO] [stdout]      |                     ^^^^ types differ in mutability
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected raw pointer `*mut types::Client`
[INFO] [stdout]                 found raw pointer `*const types::Client`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 173 |             net_active_window: intern_atom!("_NET_ACTIVE_WINDOW"),
[INFO] [stdout]     |                                ---------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 165 |     unsafe fn init_atoms(dpy: *mut Display) -> Atoms {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 174 |             net_current_desktop: intern_atom!("_NET_CURRENT_DESKTOP"),
[INFO] [stdout]     |                                  ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 175 |             net_supported: intern_atom!("_NET_SUPPORTED"),
[INFO] [stdout]     |                            ------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 176 |             net_wm_state: intern_atom!("_NET_WM_STATE"),
[INFO] [stdout]     |                           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 177 |             net_wm_state_fullscreen: intern_atom!("_NET_WM_STATE_FULLSCREEN"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 178 |             wm_state: intern_atom!("WM_STATE"),
[INFO] [stdout]     |                       ------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 179 |             net_wm_window_type: intern_atom!("_NET_WM_WINDOW_TYPE"),
[INFO] [stdout]     |                                 ----------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 180 |             net_workarea: intern_atom!("_NET_WORKAREA"),
[INFO] [stdout]     |                           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 181 |             wm_delete_window: intern_atom!("WM_DELETE_WINDOW"),
[INFO] [stdout]     |                               -------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 182 |             net_wm_strut: intern_atom!("_NET_WM_STRUT"),
[INFO] [stdout]     |                           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 183 |             net_wm_strut_partial: intern_atom!("_NET_WM_STRUT_PARTIAL"),
[INFO] [stdout]     |                                   ------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 184 |             net_supporting_wm_check: intern_atom!("_NET_SUPPORTING_WM_CHECK"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 185 |             net_wm_name: intern_atom!("_NET_WM_NAME"),
[INFO] [stdout]     |                          ---------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 186 |             utf8_string: intern_atom!("UTF8_STRING"),
[INFO] [stdout]     |                          --------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 187 |             net_wm_desktop: intern_atom!("_NET_WM_DESKTOP"),
[INFO] [stdout]     |                             ------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 188 |             net_client_list: intern_atom!("_NET_CLIENT_LIST"),
[INFO] [stdout]     |                              -------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 189 |             net_frame_extents: intern_atom!("_NET_FRAME_EXTENTS"),
[INFO] [stdout]     |                                ---------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 190 |             net_number_of_desktops: intern_atom!("_NET_NUMBER_OF_DESKTOPS"),
[INFO] [stdout]     |                                     --------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 191 |             net_desktop_names: intern_atom!("_NET_DESKTOP_NAMES"),
[INFO] [stdout]     |                                ---------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 192 |             net_wm_pid: intern_atom!("_NET_WM_PID"),
[INFO] [stdout]     |                         --------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 193 |             net_wm_window_type_dock: intern_atom!("_NET_WM_WINDOW_TYPE_DOCK"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 194 |             net_wm_window_type_utility: intern_atom!("_NET_WM_WINDOW_TYPE_UTILITY"),
[INFO] [stdout]     |                                         ------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 195 |             net_wm_window_type_dialog: intern_atom!("_NET_WM_WINDOW_TYPE_DIALOG"),
[INFO] [stdout]     |                                        ------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 196 |             net_wm_window_type_toolbar: intern_atom!("_NET_WM_WINDOW_TYPE_TOOLBAR"),
[INFO] [stdout]     |                                         ------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 197 |             net_wm_window_type_splash: intern_atom!("_NET_WM_WINDOW_TYPE_SPLASH"),
[INFO] [stdout]     |                                        ------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 198 |             net_wm_window_type_popup_menu: intern_atom!("_NET_WM_WINDOW_TYPE_POPUP_MENU"),
[INFO] [stdout]     |                                            ---------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 199 |             net_wm_window_type_menu: intern_atom!("_NET_WM_WINDOW_TYPE_MENU"),
[INFO] [stdout]     |                                      ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 200 |             net_wm_window_type_dropdown_menu: intern_atom!("_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"),
[INFO] [stdout]     |                                               ------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 201 |             net_wm_window_type_tooltip: intern_atom!("_NET_WM_WINDOW_TYPE_TOOLTIP"),
[INFO] [stdout]     |                                         ------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 202 |             net_wm_window_type_notification: intern_atom!("_NET_WM_WINDOW_TYPE_NOTIFICATION"),
[INFO] [stdout]     |                                              ------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 203 |             net_wm_state_modal: intern_atom!("_NET_WM_STATE_MODAL"),
[INFO] [stdout]     |                                 ----------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 204 |             wm_take_focus: intern_atom!("WM_TAKE_FOCUS"),
[INFO] [stdout]     |                            ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XInternAtom` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:168:17
[INFO] [stdout]     |
[INFO] [stdout] 168 |                 XInternAtom(dpy, concat!($name, "\0").as_ptr() as *const i8, 0)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout] ...
[INFO] [stdout] 205 |             wm_protocols: intern_atom!("WM_PROTOCOLS"),
[INFO] [stdout]     |                           ---------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the macro `intern_atom` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetErrorText` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |         XGetErrorText(display, (*ee).error_code as i32, error_text.as_mut_ptr(), 1024);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 |     unsafe extern "C" fn error_handler(display: *mut Display, ee: *mut XErrorEvent) -> i32 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:216:32
[INFO] [stdout]     |
[INFO] [stdout] 216 |         XGetErrorText(display, (*ee).error_code as i32, error_text.as_mut_ptr(), 1024);
[INFO] [stdout]     |                                ^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:218:25
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let error_str = std::ffi::CStr::from_ptr(error_text.as_ptr())
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xinerama::XineramaQueryScreens` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:230:27
[INFO] [stdout]     |
[INFO] [stdout] 230 |         let screen_info = XineramaQueryScreens(self.display, &mut n_screens);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:226:5
[INFO] [stdout]     |
[INFO] [stdout] 226 |     unsafe fn update_monitors(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:234:28
[INFO] [stdout]     |
[INFO] [stdout] 234 |                 let info = *screen_info.offset(i);
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:234:29
[INFO] [stdout]     |
[INFO] [stdout] 234 |                 let info = *screen_info.offset(i);
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |             XFree(screen_info as *mut _);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDefaultScreen` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:250:26
[INFO] [stdout]     |
[INFO] [stdout] 250 |             let screen = XDefaultScreen(self.display);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDisplayWidth` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:254:20
[INFO] [stdout]     |
[INFO] [stdout] 254 |                 w: XDisplayWidth(self.display, screen),
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDisplayHeight` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:255:20
[INFO] [stdout]     |
[INFO] [stdout] 255 |                 h: XDisplayHeight(self.display, screen),
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 | /         XChangeProperty(
[INFO] [stdout] 300 | |             self.display,
[INFO] [stdout] 301 | |             self.root,
[INFO] [stdout] 302 | |             self.atoms.net_supported,
[INFO] [stdout] ...   |
[INFO] [stdout] 307 | |             supported_atoms.len() as i32,
[INFO] [stdout] 308 | |         );
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:283:5
[INFO] [stdout]     |
[INFO] [stdout] 283 |     unsafe fn setup_ewmh(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:312:9
[INFO] [stdout]     |
[INFO] [stdout] 312 | /         XChangeProperty(
[INFO] [stdout] 313 | |             self.display,
[INFO] [stdout] 314 | |             self.root,
[INFO] [stdout] 315 | |             self.atoms.net_number_of_desktops,
[INFO] [stdout] ...   |
[INFO] [stdout] 320 | |             1,
[INFO] [stdout] 321 | |         );
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         XChangeProperty(
[INFO] [stdout] 326 | |             self.display,
[INFO] [stdout] 327 | |             self.root,
[INFO] [stdout] 328 | |             self.atoms.net_current_desktop,
[INFO] [stdout] ...   |
[INFO] [stdout] 333 | |             1,
[INFO] [stdout] 334 | |         );
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XUngrabKey` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |         XUngrabKey(self.display, AnyKey as i32, AnyModifier, self.root);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     unsafe fn grab_keys(&self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XKeysymToKeycode` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:342:31
[INFO] [stdout]     |
[INFO] [stdout] 342 |                 let keycode = XKeysymToKeycode(self.display, binding.keysym);
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGrabKey` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:344:21
[INFO] [stdout]     |
[INFO] [stdout] 344 | /                     XGrabKey(
[INFO] [stdout] 345 | |                         self.display,
[INFO] [stdout] 346 | |                         keycode as i32,
[INFO] [stdout] 347 | |                         binding.mods,
[INFO] [stdout] ...   |
[INFO] [stdout] 351 | |                         GrabModeAsync
[INFO] [stdout] 352 | |                     );
[INFO] [stdout]     | |_____________________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XQueryTree` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:385:12
[INFO] [stdout]     |
[INFO] [stdout] 385 |           if XQueryTree(
[INFO] [stdout]     |  ____________^
[INFO] [stdout] 386 | |             self.display,
[INFO] [stdout] 387 | |             self.root,
[INFO] [stdout] 388 | |             &mut root_return,
[INFO] [stdout] ...   |
[INFO] [stdout] 391 | |             &mut nchildren
[INFO] [stdout] 392 | |         ) != 0 && !children.is_null() {
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:379:5
[INFO] [stdout]     |
[INFO] [stdout] 379 |     unsafe fn scan_windows(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:394:27
[INFO] [stdout]     |
[INFO] [stdout] 394 |                 let win = *children.offset(i);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:394:28
[INFO] [stdout]     |
[INFO] [stdout] 394 |                 let win = *children.offset(i);
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::zeroed` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:395:49
[INFO] [stdout]     |
[INFO] [stdout] 395 |                 let mut wa: XWindowAttributes = std::mem::zeroed();
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowAttributes` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:396:20
[INFO] [stdout]     |
[INFO] [stdout] 396 |                 if XGetWindowAttributes(self.display, win, &mut wa) != 0 {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::manage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:398:25
[INFO] [stdout]     |
[INFO] [stdout] 398 |                         self.manage_window(win);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:402:13
[INFO] [stdout]     |
[INFO] [stdout] 402 |             XFree(children as *mut _);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:503:15
[INFO] [stdout]     |
[INFO] [stdout] 503 |         match (*event).get_type() {
[INFO] [stdout]     |               ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:502:5
[INFO] [stdout]     |
[INFO] [stdout] 502 |     unsafe fn handle_event(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_key_press` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:504:25
[INFO] [stdout]     |
[INFO] [stdout] 504 |             KeyPress => self.handle_key_press(event),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_button_press` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:505:28
[INFO] [stdout]     |
[INFO] [stdout] 505 |             ButtonPress => self.handle_button_press(event),
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_button_release` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:506:30
[INFO] [stdout]     |
[INFO] [stdout] 506 |             ButtonRelease => self.handle_button_release(event),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_motion_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:507:29
[INFO] [stdout]     |
[INFO] [stdout] 507 |             MotionNotify => self.handle_motion_notify(event),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_configure_request` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:508:33
[INFO] [stdout]     |
[INFO] [stdout] 508 |             ConfigureRequest => self.handle_configure_request(event),
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_map_request` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:509:27
[INFO] [stdout]     |
[INFO] [stdout] 509 |             MapRequest => self.handle_map_request(event),
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_unmap_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:510:28
[INFO] [stdout]     |
[INFO] [stdout] 510 |             UnmapNotify => self.handle_unmap_notify(event),
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_destroy_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:511:30
[INFO] [stdout]     |
[INFO] [stdout] 511 |             DestroyNotify => self.handle_destroy_notify(event),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_enter_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:512:28
[INFO] [stdout]     |
[INFO] [stdout] 512 |             EnterNotify => self.handle_enter_notify(event),
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_property_notify` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:513:31
[INFO] [stdout]     |
[INFO] [stdout] 513 |             PropertyNotify => self.handle_property_notify(event),
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::handle_client_message` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:514:30
[INFO] [stdout]     |
[INFO] [stdout] 514 |             ClientMessage => self.handle_client_message(event),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:520:36
[INFO] [stdout]     |
[INFO] [stdout] 520 |         let xkey = XKeyEvent::from((*event).key);
[INFO] [stdout]     |                                    ^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:519:5
[INFO] [stdout]     |
[INFO] [stdout] 519 |     unsafe fn handle_key_press(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:520:36
[INFO] [stdout]     |
[INFO] [stdout] 520 |         let xkey = XKeyEvent::from((*event).key);
[INFO] [stdout]     |                                    ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XKeycodeToKeysym` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:521:22
[INFO] [stdout]     |
[INFO] [stdout] 521 |         let keysym = XKeycodeToKeysym(self.display, xkey.keycode as u8, 0);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:554:42
[INFO] [stdout]     |
[INFO] [stdout] 554 |         let xbutton = XButtonEvent::from((*event).button);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:553:5
[INFO] [stdout]     |
[INFO] [stdout] 553 |     unsafe fn handle_button_press(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:554:42
[INFO] [stdout]     |
[INFO] [stdout] 554 |         let xbutton = XButtonEvent::from((*event).button);
[INFO] [stdout]     |                                          ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::find_client_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:557:26
[INFO] [stdout]     |
[INFO] [stdout] 557 |         let client_win = self.find_client_window(xbutton.subwindow);
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::set_input_focus` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:564:9
[INFO] [stdout]     |
[INFO] [stdout] 564 |         self.set_input_focus(client_win, true, false);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:569:35
[INFO] [stdout]     |
[INFO] [stdout] 569 |                 let client = &mut *client_ptr;
[INFO] [stdout]     |                                   ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:606:42
[INFO] [stdout]     |
[INFO] [stdout] 606 |         let xmotion = XMotionEvent::from((*event).motion);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:601:5
[INFO] [stdout]     |
[INFO] [stdout] 601 |     unsafe fn handle_motion_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:606:42
[INFO] [stdout]     |
[INFO] [stdout] 606 |         let xmotion = XMotionEvent::from((*event).motion);
[INFO] [stdout]     |                                          ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:610:31
[INFO] [stdout]     |
[INFO] [stdout] 610 |             let client = &mut *client_ptr;
[INFO] [stdout]     |                               ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:619:21
[INFO] [stdout]     |
[INFO] [stdout] 619 |                     XMoveWindow(self.display, drag_win, client.x, client.y);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:627:21
[INFO] [stdout]     |
[INFO] [stdout] 627 |                     XResizeWindow(self.display, drag_win, client.w as u32, client.h as u32);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:635:48
[INFO] [stdout]     |
[INFO] [stdout] 635 |         let xce = XConfigureRequestEvent::from((*event).configure_request);
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:634:5
[INFO] [stdout]     |
[INFO] [stdout] 634 |     unsafe fn handle_configure_request(&self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:635:48
[INFO] [stdout]     |
[INFO] [stdout] 635 |         let xce = XConfigureRequestEvent::from((*event).configure_request);
[INFO] [stdout]     |                                                ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::zeroed` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:636:38
[INFO] [stdout]     |
[INFO] [stdout] 636 |         let mut wc: XWindowChanges = std::mem::zeroed();
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XConfigureWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:646:9
[INFO] [stdout]     |
[INFO] [stdout] 646 |         XConfigureWindow(self.display, xce.window, xce.value_mask as u32, &mut wc);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:650:42
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let xmr = XMapRequestEvent::from((*event).map_request);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:649:5
[INFO] [stdout]     |
[INFO] [stdout] 649 |     unsafe fn handle_map_request(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:650:42
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let xmr = XMapRequestEvent::from((*event).map_request);
[INFO] [stdout]     |                                          ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::manage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:657:9
[INFO] [stdout]     |
[INFO] [stdout] 657 |         self.manage_window(xmr.window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::tile` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:658:9
[INFO] [stdout]     |
[INFO] [stdout] 658 |         self.tile();
[INFO] [stdout]     |         ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:659:9
[INFO] [stdout]     |
[INFO] [stdout] 659 |         self.update_borders();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:663:37
[INFO] [stdout]     |
[INFO] [stdout] 663 |         let xun = XUnmapEvent::from((*event).unmap);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:662:5
[INFO] [stdout]     |
[INFO] [stdout] 662 |     unsafe fn handle_unmap_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:663:37
[INFO] [stdout]     |
[INFO] [stdout] 663 |         let xun = XUnmapEvent::from((*event).unmap);
[INFO] [stdout]     |                                     ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::unmanage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:664:9
[INFO] [stdout]     |
[INFO] [stdout] 664 |         self.unmanage_window(xun.window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:668:45
[INFO] [stdout]     |
[INFO] [stdout] 668 |         let xdn = XDestroyWindowEvent::from((*event).destroy_window);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:667:5
[INFO] [stdout]     |
[INFO] [stdout] 667 |     unsafe fn handle_destroy_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:668:45
[INFO] [stdout]     |
[INFO] [stdout] 668 |         let xdn = XDestroyWindowEvent::from((*event).destroy_window);
[INFO] [stdout]     |                                             ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::unmanage_window` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:669:9
[INFO] [stdout]     |
[INFO] [stdout] 669 |         self.unmanage_window(xdn.window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:691:35
[INFO] [stdout]     |
[INFO] [stdout] 691 |                 let client = &mut *client_ptr;
[INFO] [stdout]     |                                   ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:672:5
[INFO] [stdout]     |
[INFO] [stdout] 672 |     unsafe fn unmanage_window(&mut self, w: Window) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:695:25
[INFO] [stdout]     |
[INFO] [stdout] 695 |                         (*prev_ptr).next = client.next.take();
[INFO] [stdout]     |                         ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:701:26
[INFO] [stdout]     |
[INFO] [stdout] 701 |                     drop(Box::from_raw(client_ptr));
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::focus_prev` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:713:13
[INFO] [stdout]     |
[INFO] [stdout] 713 |             self.focus_prev();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::tile` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:716:9
[INFO] [stdout]     |
[INFO] [stdout] 716 |         self.tile();
[INFO] [stdout]     |         ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:717:9
[INFO] [stdout]     |
[INFO] [stdout] 717 |         self.update_borders();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:721:40
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let xev = XCrossingEvent::from((*event).crossing);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:720:5
[INFO] [stdout]     |
[INFO] [stdout] 720 |     unsafe fn handle_enter_notify(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:721:40
[INFO] [stdout]     |
[INFO] [stdout] 721 |         let xev = XCrossingEvent::from((*event).crossing);
[INFO] [stdout]     |                                        ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::set_input_focus` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:724:13
[INFO] [stdout]     |
[INFO] [stdout] 724 |             self.set_input_focus(xev.window, false, false);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: access to union field is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:733:45
[INFO] [stdout]     |
[INFO] [stdout] 733 |         let xev = XClientMessageEvent::from((*event).client_message);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^ access to union field
[INFO] [stdout]     |
[INFO] [stdout]     = note: the field may not be properly initialized: using uninitialized data will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:732:5
[INFO] [stdout]     |
[INFO] [stdout] 732 |     unsafe fn handle_client_message(&mut self, event: *mut XEvent) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:733:45
[INFO] [stdout]     |
[INFO] [stdout] 733 |         let xev = XClientMessageEvent::from((*event).client_message);
[INFO] [stdout]     |                                             ^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:741:77
[INFO] [stdout]     |
[INFO] [stdout] 741 |                     let should_fullscreen = action == 1 || (action == 2 && !(*client_ptr).fullscreen);
[INFO] [stdout]     |                                                                             ^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::apply_fullscreen` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:742:21
[INFO] [stdout]     |
[INFO] [stdout] 742 |                     self.apply_fullscreen(xev.window, should_fullscreen);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_struts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:895:9
[INFO] [stdout]     |
[INFO] [stdout] 895 |         self.update_struts();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/main.rs:894:5
[INFO] [stdout]     |
[INFO] [stdout] 894 |     unsafe fn tile(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:911:31
[INFO] [stdout]     |
[INFO] [stdout] 911 |                 let client = &*client_ptr;
[INFO] [stdout]     |                               ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:915:27
[INFO] [stdout]     |
[INFO] [stdout] 915 |                 current = (*client_ptr).next.as_mut().map(|b| &mut **b as *mut Client);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:944:31
[INFO] [stdout]     |
[INFO] [stdout] 944 |             let master = &mut *tileable[0];
[INFO] [stdout]     |                               ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:951:13
[INFO] [stdout]     |
[INFO] [stdout] 951 | /             XMoveResizeWindow(
[INFO] [stdout] 952 | |                 self.display,
[INFO] [stdout] 953 | |                 master.win,
[INFO] [stdout] 954 | |                 master.x,
[INFO] [stdout] ...   |
[INFO] [stdout] 957 | |                 master.h as u32,
[INFO] [stdout] 958 | |             );
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:959:13
[INFO] [stdout]     |
[INFO] [stdout] 959 |             XSetWindowBorderWidth(self.display, master.win, self.config.border_width as u32);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:970:35
[INFO] [stdout]     |
[INFO] [stdout] 970 |                 let client = &mut *client_ptr;
[INFO] [stdout]     |                                   ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:984:17
[INFO] [stdout]     |
[INFO] [stdout] 984 | /                 XMoveResizeWindow(
[INFO] [stdout] 985 | |                     self.display,
[INFO] [stdout] 986 | |                     client.win,
[INFO] [stdout] 987 | |                     client.x,
[INFO] [stdout] ...   |
[INFO] [stdout] 990 | |                     client.h as u32,
[INFO] [stdout] 991 | |                 );
[INFO] [stdout]     | |_________________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:992:17
[INFO] [stdout]     |
[INFO] [stdout] 992 |                 XSetWindowBorderWidth(self.display, client.win, self.config.border_width as u32);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/main.rs:996:9
[INFO] [stdout]     |
[INFO] [stdout] 996 |         self.update_borders();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1016:27
[INFO] [stdout]      |
[INFO] [stdout] 1016 |             let client = &*client_ptr;
[INFO] [stdout]      |                           ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1012:5
[INFO] [stdout]      |
[INFO] [stdout] 1012 |     unsafe fn update_borders(&self) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorder` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1023:13
[INFO] [stdout]      |
[INFO] [stdout] 1023 |             XSetWindowBorder(self.display, client.win, color as u64);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1030:27
[INFO] [stdout]      |
[INFO] [stdout] 1030 |             let client = &*client_ptr;
[INFO] [stdout]      |                           ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1028:5
[INFO] [stdout]      |
[INFO] [stdout] 1028 |     unsafe fn set_input_focus(&mut self, w: Window, raise_win: bool, warp: bool) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XRaiseWindow` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1033:17
[INFO] [stdout]      |
[INFO] [stdout] 1033 |                 XRaiseWindow(self.display, w);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetInputFocus` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1036:13
[INFO] [stdout]      |
[INFO] [stdout] 1036 |             XSetInputFocus(self.display, w, RevertToPointerRoot, CurrentTime);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XWarpPointer` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1040:17
[INFO] [stdout]      |
[INFO] [stdout] 1040 | /                 XWarpPointer(
[INFO] [stdout] 1041 | |                     self.display,
[INFO] [stdout] 1042 | |                     0,
[INFO] [stdout] 1043 | |                     w,
[INFO] [stdout] ...    |
[INFO] [stdout] 1046 | |                     client.h / 2,
[INFO] [stdout] 1047 | |                 );
[INFO] [stdout]      | |_________________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1051:13
[INFO] [stdout]      |
[INFO] [stdout] 1051 | /             XChangeProperty(
[INFO] [stdout] 1052 | |                 self.display,
[INFO] [stdout] 1053 | |                 self.root,
[INFO] [stdout] 1054 | |                 self.atoms.net_active_window,
[INFO] [stdout] ...    |
[INFO] [stdout] 1059 | |                 1,
[INFO] [stdout] 1060 | |             );
[INFO] [stdout]      | |_____________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1062:13
[INFO] [stdout]      |
[INFO] [stdout] 1062 |             self.update_borders();
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1070:27
[INFO] [stdout]      |
[INFO] [stdout] 1070 |             let client = &*client_ptr;
[INFO] [stdout]      |                           ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1066:5
[INFO] [stdout]      |
[INFO] [stdout] 1066 |     unsafe fn focus_prev(&mut self) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::set_input_focus` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1072:17
[INFO] [stdout]      |
[INFO] [stdout] 1072 |                 self.set_input_focus(client.win, true, false);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1229:31
[INFO] [stdout]      |
[INFO] [stdout] 1229 |             let client = &mut *client_ptr;
[INFO] [stdout]      |                               ^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1227:5
[INFO] [stdout]      |
[INFO] [stdout] 1227 |     unsafe fn apply_fullscreen(&mut self, w: Window, fullscreen: bool) {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1251:17
[INFO] [stdout]      |
[INFO] [stdout] 1251 |                 XSetWindowBorderWidth(self.display, w, 0);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XMoveResizeWindow` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1252:17
[INFO] [stdout]      |
[INFO] [stdout] 1252 |                 XMoveResizeWindow(self.display, w, client.x, client.y, client.w as u32, client.h as u32);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XRaiseWindow` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1253:17
[INFO] [stdout]      |
[INFO] [stdout] 1253 |                 XRaiseWindow(self.display, w);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XSetWindowBorderWidth` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1261:17
[INFO] [stdout]      |
[INFO] [stdout] 1261 |                 XSetWindowBorderWidth(self.display, w, self.config.border_width as u32);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::tile` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1262:17
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                 self.tile();
[INFO] [stdout]      |                 ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XChangeProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1267:17
[INFO] [stdout]      |
[INFO] [stdout] 1267 | /                 XChangeProperty(
[INFO] [stdout] 1268 | |                     self.display,
[INFO] [stdout] 1269 | |                     w,
[INFO] [stdout] 1270 | |                     self.atoms.net_wm_state,
[INFO] [stdout] ...    |
[INFO] [stdout] 1275 | |                     1,
[INFO] [stdout] 1276 | |                 );
[INFO] [stdout]      | |_________________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XDeleteProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1278:17
[INFO] [stdout]      |
[INFO] [stdout] 1278 |                 XDeleteProperty(self.display, w, self.atoms.net_wm_state);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::update_borders` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1281:13
[INFO] [stdout]      |
[INFO] [stdout] 1281 |             self.update_borders();
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1293:12
[INFO] [stdout]      |
[INFO] [stdout] 1293 |           if XGetWindowProperty(
[INFO] [stdout]      |  ____________^
[INFO] [stdout] 1294 | |             self.display,
[INFO] [stdout] 1295 | |             w,
[INFO] [stdout] 1296 | |             self.atoms.net_wm_window_type,
[INFO] [stdout] ...    |
[INFO] [stdout] 1305 | |             &mut prop,
[INFO] [stdout] 1306 | |         ) == 0 && !prop.is_null() {
[INFO] [stdout]      | |_________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1285:5
[INFO] [stdout]      |
[INFO] [stdout] 1285 |     unsafe fn window_should_float(&self, w: Window) -> bool {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1307:25
[INFO] [stdout]      |
[INFO] [stdout] 1307 |             let types = std::slice::from_raw_parts(prop as *const u64, n_items as usize);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1318:21
[INFO] [stdout]      |
[INFO] [stdout] 1318 |                     XFree(prop as *mut _);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1322:13
[INFO] [stdout]      |
[INFO] [stdout] 1322 |             XFree(prop as *mut _);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::zeroed` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1326:34
[INFO] [stdout]      |
[INFO] [stdout] 1326 |         let mut ch: XClassHint = std::mem::zeroed();
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetClassHint` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1327:12
[INFO] [stdout]      |
[INFO] [stdout] 1327 |         if XGetClassHint(self.display, w, &mut ch) != 0 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1334:21
[INFO] [stdout]      |
[INFO] [stdout] 1334 |                     std::ffi::CStr::from_ptr(ch.res_class).to_string_lossy()
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1340:21
[INFO] [stdout]      |
[INFO] [stdout] 1340 |                     std::ffi::CStr::from_ptr(ch.res_name).to_string_lossy()
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1347:25
[INFO] [stdout]      |
[INFO] [stdout] 1347 |                         XFree(ch.res_class as *mut _);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1350:25
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         XFree(ch.res_name as *mut _);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1357:17
[INFO] [stdout]      |
[INFO] [stdout] 1357 |                 XFree(ch.res_class as *mut _);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1360:17
[INFO] [stdout]      |
[INFO] [stdout] 1360 |                 XFree(ch.res_name as *mut _);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetTransientForHint` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1366:12
[INFO] [stdout]      |
[INFO] [stdout] 1366 |         if XGetTransientForHint(self.display, w, &mut transient) != 0 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1381:12
[INFO] [stdout]      |
[INFO] [stdout] 1381 |           if XGetWindowProperty(
[INFO] [stdout]      |  ____________^
[INFO] [stdout] 1382 | |             self.display,
[INFO] [stdout] 1383 | |             w,
[INFO] [stdout] 1384 | |             self.atoms.net_wm_state,
[INFO] [stdout] ...    |
[INFO] [stdout] 1393 | |             &mut prop,
[INFO] [stdout] 1394 | |         ) == 0 && !prop.is_null() {
[INFO] [stdout]      | |_________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1373:5
[INFO] [stdout]      |
[INFO] [stdout] 1373 |     unsafe fn window_should_start_fullscreen(&self, w: Window) -> bool {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1395:26
[INFO] [stdout]      |
[INFO] [stdout] 1395 |             let states = std::slice::from_raw_parts(prop as *const u64, n_items as usize);
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1398:21
[INFO] [stdout]      |
[INFO] [stdout] 1398 |                     XFree(prop as *mut _);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1402:13
[INFO] [stdout]      |
[INFO] [stdout] 1402 |             XFree(prop as *mut _);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XGetWindowProperty` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1415:12
[INFO] [stdout]      |
[INFO] [stdout] 1415 |           if XGetWindowProperty(
[INFO] [stdout]      |  ____________^
[INFO] [stdout] 1416 | |             self.display,
[INFO] [stdout] 1417 | |             w,
[INFO] [stdout] 1418 | |             self.atoms.net_wm_window_type,
[INFO] [stdout] ...    |
[INFO] [stdout] 1427 | |             &mut prop,
[INFO] [stdout] 1428 | |         ) == 0 && !prop.is_null() {
[INFO] [stdout]      | |_________^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1408:5
[INFO] [stdout]      |
[INFO] [stdout] 1408 |     unsafe fn window_is_dock(&self, w: Window) -> bool {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1429:25
[INFO] [stdout]      |
[INFO] [stdout] 1429 |             let types = std::slice::from_raw_parts(prop as *const u64, n_items as usize);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1432:21
[INFO] [stdout]      |
[INFO] [stdout] 1432 |                     XFree(prop as *mut _);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1436:13
[INFO] [stdout]      |
[INFO] [stdout] 1436 |             XFree(prop as *mut _);
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XQueryTree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1471:12
[INFO] [stdout]      |
[INFO] [stdout] 1471 |         if XQueryTree(self.display, w, &mut root_return, &mut parent, &mut children, &mut nchildren) != 0 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/main.rs:1456:5
[INFO] [stdout]      |
[INFO] [stdout] 1456 |     unsafe fn find_client_window(&self, w: Window) -> Window {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `x11::xlib::XFree` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1473:17
[INFO] [stdout]      |
[INFO] [stdout] 1473 |                 XFree(children as *mut _);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `WindowManager::find_client_window` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/main.rs:1476:24
[INFO] [stdout]      |
[INFO] [stdout] 1476 |                 return self.find_client_window(parent);
[INFO] [stdout]      |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]     --> src/main.rs:2083:17
[INFO] [stdout]      |
[INFO] [stdout] 2083 |             let head = match &mut self.workspaces[self.current_ws] {
[INFO] [stdout]      |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]     --> src/main.rs:2106:17
[INFO] [stdout]      |
[INFO] [stdout] 2106 |             let head = match &mut self.workspaces[self.current_ws] {
[INFO] [stdout]      |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0133, E0277, E0308, E0432, E0592.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `twmx` (bin "twmx" test) due to 12 previous errors; 167 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a", kill_on_drop: false }`
[INFO] [stdout] 1eed1a2a58514b0957363ed8dd21c9c8dbaedf031cccaf231e462988649e347a
